package com.atguigu.jxc.service.impl;

import com.atguigu.jxc.dao.GoodsTypeDao;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.service.GoodsTypeService;
import com.atguigu.jxc.util.StringUtil;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service
public class GoodsTypeServiceImpl implements GoodsTypeService {

    @Autowired
    private GoodsTypeDao goodsTypeDao;

    //查询商品固定所有分类
//    @Override
//    public String loadGoodsType() {
//        //查询所有类别
//        List<GoodsType> goodsTypeList1 = goodsTypeDao.selectTypeIdOne(1, -1);
//        List<Object> objects = new ArrayList<>();
//        Map<String, Object> map0=null;
//        for (GoodsType goods : goodsTypeList1) {
//            map0 = new HashMap<>();//保存"所有类别",
//            //所有类别
//            map0.put("id",goods.getGoodsTypeId());
//            map0.put("text",goods.getGoodsTypeName());
//            HashMap map2 = new HashMap<String,Object>();
//            map2.put("state",goods.getGoodsTypeState());
//            map0.put("state",map2);
//            map0.put("iconCls","goods-type");
//            //  "attributes": {"state": 1}
//            map0.put("attributes",map0.put("state",goods.getGoodsTypeState()));
//            //遍历所有根节点
//            List<Object> children = new ArrayList<>();
//            //SELECT goods_type_id, goods_type_name, p_id, goods_type_state FROM t_goods_type WHERE goods_type_state = 1
//            //查询所有一级分类
//            List<GoodsType> goodsTypeList = goodsTypeDao.selectTypeIdOne(1,1);
//            for (GoodsType goodsType : goodsTypeList) {
//                Map<String, Object> map = new HashMap<>();//保存全部一级属性
//                map.put("id",goodsType.getGoodsTypeId());
//                map.put("text",goodsType.getGoodsTypeName());
//                map.put("state",goodsType.getGoodsTypeState());
//                map.put("iconCls","goods-type");
//                //  "attributes": {"state": 1}
//                map.put("attributes",map2);
//                children.add(map);//保存一级
//                //查询子节点
//                List<GoodsType> goodsTypeListChildren = goodsTypeDao.selectTypeIdChildren(0);
//                List<Object> children2 = new ArrayList<>();//保存子节点
//                for (GoodsType goodsTypeListChild : goodsTypeListChildren) {
//                    //对比1级type_id是否等于二级p_id
//                     if (goodsType.getGoodsTypeId()==goodsTypeListChild.getPId()) {
//                        Map<String, Object> mapChildren = new HashMap<>();//保存全部子节点
//                        mapChildren.put("id", goodsTypeListChild.getGoodsTypeId());
//                        mapChildren.put("text", goodsTypeListChild.getGoodsTypeName());
//                        mapChildren.put("state", goodsTypeListChild.getGoodsTypeState());
//                        mapChildren.put("iconCls", "goods-type");
//                        //  "attributes": {"state": 1}
//                        mapChildren.put("attributes", map2);
//                        children2.add(mapChildren);
//                    }
//                }
//                map.put("children",children2);//子节点放入根节点
////                children.add(children2);//子节点放入根节点
//            }
//            map0.put("children",children);
//        }
//        objects.add(map0);//添加到集合
//        //把list转为string
//        Gson gson = new Gson();
//        String json = gson.toJson(objects);
//        System.out.println(json);
//        return json;
//    }

    @Override
    public List<Map<String,Object>> loadGoodsType(Integer pId) {
        //根据pid遍历树目录
        List<GoodsType> goodsTypeList = goodsTypeDao.loadGoodsType(pId);
        if(goodsTypeList == null){
            return null;
        }
        //把所有的子节点保存
        List<Map<String,Object>> objects = new ArrayList<>();
        //循环树目录
        goodsTypeList.forEach(goodsType -> {
            HashMap map = new HashMap<String,Object>();
            map.put("id",goodsType.getGoodsTypeId());
            map.put("text",goodsType.getGoodsTypeName());
            map.put("iconCls","goods-type");
            HashMap map2 = new HashMap<String,Object>();
            map2.put("state",goodsType.getGoodsTypeState());
            map.put("attributes",map2);
            //递归自旋，进行子目录下级遍历GoodsTypeId
            List<Map<String, Object>> mapList = loadGoodsType(goodsType.getGoodsTypeId());
            if(mapList != null){
                map.put("children",mapList);
            }
            objects.add(map);
        });
//        for (GoodsType goodsType : goodsTypeList) {
//
//        }
        return objects;
    }

    //新增分类
    @Override
    public void save(String goodsTypeName, Integer pId) {
        //判断非空
        if (!StringUtil.isEmpty(goodsTypeName)&&pId!=null){
            goodsTypeDao.saveGoodsType(goodsTypeName,pId);
        }
    }

    //删除分类
    @Override
    public void delete(Integer goodsTypeId) {
        //判断非空
        if (goodsTypeId!=null){
            goodsTypeDao.delete(goodsTypeId);
        }
    }


}
